PHP 편집자 Zimo는 일반적인 코드 조각인 f = Foo(value)를 소개하기 위해 왔습니다. 이 코드가 하는 일은 f라는 Foo 객체를 생성하고 값을 생성자에 매개변수로 전달하는 것입니다. 이런 식으로 프로그램에서 Foo 객체를 사용하고 이를 연산하고 처리할 수 있습니다. Foo 객체는 특정 기능을 구현하는 데 사용되는 다양한 속성과 메서드를 가질 수 있는 클래스의 인스턴스일 수 있습니다. 객체를 생성하고 매개변수를 전달함으로써 프로그램 요구 사항을 충족하는 데 필요한 객체의 속성을 동적으로 초기화할 수 있습니다. 이는 다양한 프로그래밍 시나리오에서 사용할 수 있는 일반적으로 사용되는 코드 조각입니다.
database/sql.Scanner
인터페이스 구현을 찾았지만 잘 이해가 안 가시나요?
컴파일 가능
내가 받은 부분은 Foo
是一个整数,它有方法 Scan
Scan
方法返回error
,但是如何返回fmt.Errorf("无效的数据库类型:%T %v", value, value)
? 이것은 버그가 아닌가?
*f = Foo(value)
是做什么的?当您将此类型传递给 rows.Scan()
时,它会调用 Foo.Scan()
?如果类型是预期的 int64
它将调用自己 Foo(value)
?
type Foo int // Scan implements the database/sql.Scanner interface func (f *Foo) Scan(value interface{}) error { switch value := value.(type) { case int64: *f = Foo(value) default: return fmt.Errorf("Invalid database type: %T %v", value, value) } return nil }
fmt.Errorf(format, args)
返回使用 errors.New(str)
创建的错误值,其中 str
은 형식 문자열(오류 메시지)입니다.
라인 *f = Foo(value)
将 int64
值转换为 Foo
类型,并将其分配给方法接收者(注意 f
은 포인터입니다).
위 내용은 이것이 하는 일: *f = Foo(값)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!