Apakah yang dilakukan: *f = Foo(nilai)

PHPz
Lepaskan: 2024-02-13 15:10:09
ke hadapan
654 orang telah melayarinya

这是做什么的:*f = Foo(value)

Editor PHP Zimo di sini untuk memperkenalkan anda kepada serpihan kod biasa: f = Foo(nilai). Apa yang dilakukan oleh kod ini ialah mencipta objek Foo bernama f dan memberikan nilai sebagai parameter kepada pembinanya. Dengan cara ini, kita boleh menggunakan objek Foo dalam program dan mengendalikan serta memprosesnya. Objek Foo mungkin contoh kelas, yang mungkin mempunyai pelbagai sifat dan kaedah yang digunakan untuk melaksanakan fungsi tertentu. Dengan mencipta objek dan lulus parameter, kita boleh memulakan sifat objek secara dinamik mengikut keperluan untuk memenuhi keperluan program. Ini ialah coretan kod yang biasa digunakan yang boleh digunakan dalam banyak senario pengaturcaraan yang berbeza.

Kandungan soalan

Saya menemui pelaksanaan antara muka database/sql.Scanner, tetapi saya tidak begitu memahaminya?

Boleh disusun

Bahagian yang saya dapat ialah Foo 是一个整数,它有方法 Scan

  1. Scan方法返回error,但是如何返回fmt.Errorf("无效的数据库类型:%T %v", value, value)? Bukankah ini pepijat atau adakah ia?

  2. *f = Foo(value) 是做什么的?当您将此类型传递给 rows.Scan() 时,它会调用 Foo.Scan()?如果类型是预期的 int64 它将调用自己 Foo(value)?

Kod

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
}
Salin selepas log masuk

Penyelesaian

  1. fmt.Errorf(format, args) 返回使用 errors.New(str) 创建的错误值,其中 str ialah rentetan format (mesej ralat anda).

  2. garis *f = Foo(value)int64 值转换为 Foo 类型,并将其分配给方法接收者(注意 f ialah penunjuk).

Atas ialah kandungan terperinci Apakah yang dilakukan: *f = Foo(nilai). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!