Mengapa Kaedah Antara Muka Stringer Saya Tidak Digunakan Semasa Menggunakan fmt.Println()
Anda mempunyai kaedah String() yang ditakrifkan pada * Kereta, tetapi apabila menggunakan fmt.Println(myCar), objek anda ialah nilai dan bukan penunjuk. Tingkah laku ini disebabkan oleh fmt.Println() secara tersirat menukar objek myCar kepada nilai antara muka jenis{} dan kemudian menggunakan suis jenis untuk menentukan cara mencetaknya.
Suis jenis dalam pakej fmt menyemak untuk kes jenis fmt.Stringer. Walau bagaimanapun, semakan ini gagal kerana Kereta (dan bukan *Kereta) melaksanakan kaedah String(). Memanggil String() berfungsi secara manual kerana pengkompil secara automatik menukar myCar.String() kepada (&myCar).String(), membekalkan penunjuk yang diperlukan.
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
fmt.Println(&myCar)
Atas ialah kandungan terperinci Mengapa `fmt.Println()` Tidak Memanggil Kaedah Stringer Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!