Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ralat golang: "missing return..." Bagaimana cara menyelesaikannya?

ralat golang: "missing return..." Bagaimana cara menyelesaikannya?

WBOY
WBOYasal
2023-06-24 16:37:401294semak imbas

Dalam golang, jenis nilai pulangan dan nilai pulangan perlu ditakrifkan dengan jelas apabila fungsi ditakrifkan, tetapi kadangkala ralat "hilang pulangan..." berlaku, menunjukkan bahawa fungsi itu tidak mempunyai penyataan pulangan. Artikel ini menerangkan cara menyelesaikan masalah ini.

  1. Sahkan tandatangan fungsi

Jika jenis nilai pulangan diisytiharkan semasa mentakrifkan fungsi, tetapi tiada nilai khusus dikembalikan, ralat ini akan dicetuskan. Oleh itu, anda boleh menyemak tandatangan fungsi terlebih dahulu untuk mengesahkan bahawa jenis pemulangan diisytiharkan. Contohnya:

func add(a, b int) int {
  return a + b
}

Dalam contoh ini, tandatangan fungsi mengisytiharkan jenis pulangan sebagai int. Jika penyataan pulangan diabaikan daripada definisi fungsi, ralat "hilang pulangan..." akan dicetuskan.

  1. Tambah penyata pemulangan yang hilang

Jika anda mengesahkan bahawa tandatangan fungsi adalah betul, tetapi ralat ini masih berlaku, anda perlu menambah penyata pemulangan yang hilang. Dalam kes di mana semua cawangan fungsi mempunyai penyata pulangan, ralat ini tidak akan berlaku lagi. Contohnya:

func divide(a, b float64) (float64, error) {
  if b == 0 {
    return 0, fmt.Errorf("division by zero")
  }
  return a / b, nil
}

Dalam contoh ini, definisi fungsi mengisytiharkan bahawa ia mengembalikan dua nilai: float64 dan ralat. Dalam blok pernyataan if, fungsi ini mempunyai pernyataan pulangan, tetapi pernyataan pulangan hilang dalam blok pernyataan else, yang akan mencetuskan ralat "kepulangan hilang...". Anda boleh menambah penyata pulangan yang hilang seperti yang ditunjukkan di bawah:

func divide(a, b float64) (float64, error) {
  if b == 0 {
    return 0, fmt.Errorf("division by zero")
  }
  return a / b, nil
}

Dalam contoh yang diubah suai ini, penyata pulangan ditambah pada blok pernyataan else untuk mengembalikan nilai yang betul. Dalam kes ini, semua cawangan dalam fungsi mempunyai penyata pulangan, jadi ralat "hilang pulangan..." diselesaikan.

  1. Tambah nilai pulangan lalai

Dalam sesetengah kes, anda mungkin tidak dapat menambah penyataan pulangan eksplisit pada semua cabang fungsi. Sebagai contoh, jika jenis pemulangan fungsi ialah jenis antara muka, anda mungkin perlu mengembalikan nilai antara muka kosong dan bukannya sifar dalam beberapa kes. Dalam kes ini, anda boleh menambah penyata pulangan lalai untuk menyelesaikan ralat "hilang pulangan...".

Contohnya:

type Animal interface {
  Speak() string
}

type Duck struct {}

func (d Duck) Speak() string {
  return "quack"
}

func GetAnimal(isDuck bool) Animal {
  if isDuck {
    return Duck{}
  }
  // 缺少返回值
}

Dalam contoh ini, fungsi GetAnimal mengembalikan nilai jenis antara muka Haiwan berdasarkan nilai Boolean yang diluluskan. Jika isDuck adalah benar, nilai Duck dikembalikan. Walau bagaimanapun, jika isDuck palsu, fungsi ini tidak akan mengembalikan sebarang nilai, yang akan mencetuskan ralat "hilang pulangan...". Untuk menyelesaikan masalah ini, anda boleh menambah pernyataan pulangan lalai seperti ini:

func GetAnimal(isDuck bool) Animal {
  if isDuck {
    return Duck{}
  }
  return nil
}

Dalam contoh yang diubah suai ini, apabila isDuck palsu, fungsi GetAnimal mengembalikan sifar, iaitu nilai lalai bagi jenis antara muka Haiwan. Nilai pulangan lalai ini boleh menyelesaikan ralat "hilang pulangan...".

Kesimpulan

Dalam golang, jenis nilai pulangan dan nilai pulangan perlu dinyatakan dengan jelas semasa mentakrifkan fungsi, tetapi kadangkala ralat "hilang pulangan..." berlaku, menunjukkan bahawa fungsi itu tidak mempunyai pernyataan pulangan. Jika ralat ini berlaku, anda boleh menyelesaikannya seperti yang diterangkan di atas: mula-mula sahkan tandatangan fungsi, kemudian tambah pernyataan pulangan yang hilang atau tambah nilai pulangan lalai.

Atas ialah kandungan terperinci ralat golang: "missing return..." Bagaimana cara menyelesaikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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