Rumah pembangunan bahagian belakang Golang Had dan kekangan inferens jenis nilai pulangan dalam bahasa Go

Had dan kekangan inferens jenis nilai pulangan dalam bahasa Go

Apr 29, 2024 pm 01:48 PM
pergi bahasa kekangan jenis Ralat kompilasi Inferens nilai pulangan

Fungsi inferens jenis nilai pulangan bahasa Go hanya digunakan pada pernyataan pulangan tunggal dan tidak boleh disimpulkan untuk nilai pulangan{} antara muka dan fungsi terbina dalam. Had khusus termasuk: hanya terpakai untuk penyata pulangan tunggal. Tidak boleh membuat kesimpulan antara muka{} nilai pulangan. Tidak dapat membuat kesimpulan jenis fungsi terbina dalam.

Had dan kekangan inferens jenis nilai pulangan dalam bahasa Go

Keterbatasan dan Kekangan Inferens Jenis Nilai Pulangan Bahasa Go

Dalam bahasa Go, inferens jenis nilai pulangan selalunya mudah dan boleh menjimatkan banyak kerja menaip semasa menulis kod. Walau bagaimanapun, ia juga mempunyai beberapa had dan kekangan yang mungkin menyebabkan hasil yang tidak dijangka atau ralat penyusunan.

1. Hanya terpakai untuk penyata pulangan tunggal

Fungsi inferens jenis nilai pulangan hanya terpakai untuk penyata pulangan tunggal. Jika fungsi mempunyai berbilang penyata pulangan, jenis mesti dinyatakan secara eksplisit untuk setiap penyata pulangan. Contohnya:

func sum(a, b int) (int, error) {
  if a < 0 || b < 0 {
    return 0, errors.New("invalid input")
  }
  return a + b, nil
}
Salin selepas log masuk

2 Tidak dapat membuat kesimpulan nilai pulangan antara muka{}interface{} 返回值进行推断

Go 语言不支持对 interface{} 类型的值进行返回值类型推断。如果一个函数返回一个 interface{} 类型的值,则必须显式指定其类型。例如:

type Animal interface {
  Speak()
}

func getAnimal() interface{} {
  return new(Cat) // returns a pointer to a Cat implementation
}
Salin selepas log masuk

三、无法推断内建函数类型

Go 语言中的内建函数,例如 fmt.Println()math.Pow(),不能进行返回值类型推断。也就是说,必须为其显式指定返回值类型。例如:

package main

import "fmt"

func main() {
  v := fmt.Println("Hello, world!") // error: cannot infer type from
}
Salin selepas log masuk

实战案例

以下是一个带有返回值类型推断的函数示例:

func getLength(s string) int {
  return len(s)
}
Salin selepas log masuk

在这个函数中,返回值类型 Int 是通过 len()

Bahasa Go tidak menyokong inferens jenis nilai pulangan untuk nilai jenis antara muka{} . Jika fungsi mengembalikan nilai jenis antara muka{}, jenisnya mesti dinyatakan secara eksplisit. Contohnya: rrreee

3 Tidak dapat membuat kesimpulan jenis fungsi terbina dalam

🎜Fungsi terbina dalam dalam bahasa Go, seperti fmt.Println() dan math.Pow(. ), inferens jenis nilai pulangan tidak boleh dilakukan. Iaitu, jenis nilai pulangan mesti dinyatakan secara eksplisit untuknya. Contohnya: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Berikut ialah contoh fungsi dengan inferens jenis nilai pulangan: 🎜rrreee🎜Dalam fungsi ini, jenis nilai pulangan Int disimpulkan melalui len() kod&gt; fungsi daripada. 🎜🎜🎜Nota: 🎜🎜🎜Jika anda tidak pasti tentang jenis pemulangan, adalah disyorkan untuk sentiasa menggunakan jenis eksplisit. Ini menjadikan kod lebih mudah dibaca dan mengelakkan kemungkinan ralat kompilasi. 🎜

Atas ialah kandungan terperinci Had dan kekangan inferens jenis nilai pulangan dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan? May 01, 2024 pm 10:27 PM

Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan 'penunjuk kelas asas' dan 'penunjuk kelas terbitan' dalam warisan?

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go

Perbezaan antara const dan statik dalam c++ Perbezaan antara const dan statik dalam c++ May 01, 2024 am 10:54 AM

Perbezaan antara const dan statik dalam c++

Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java? Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java? Apr 30, 2024 pm 01:30 PM

Bagaimana untuk menyekat parameter jenis dalam kaedah generik Java?

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? May 07, 2024 pm 12:39 PM

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang?

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin May 08, 2024 pm 09:42 PM

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin

Bagaimana untuk menggunakan fungsi min dalam c++ Bagaimana untuk menggunakan fungsi min dalam c++ May 06, 2024 pm 05:18 PM

Bagaimana untuk menggunakan fungsi min dalam c++

See all articles