Bagaimanakah Saya Boleh Menyimpan Kedua-dua Rentetan dan Integer dalam Go Struct Menggunakan Antara Muka?

Susan Sarandon
Lepaskan: 2024-11-17 07:54:03
asal
285 orang telah melayarinya

How Can I Store Both Strings and Integers in a Go Struct Using an Interface?

Menggabungkan Nilai Rentetan dan Integer dalam Struktur Go: Menggunakan Antara Muka

Dalam Go, anda mungkin menghadapi senario di mana anda memerlukan struktur data untuk menyimpan nilai rentetan dan integer. Pertimbangkan takrifan struktur berikut:

type testCase struct {
   input   string
   isValid bool
}
Salin selepas log masuk

Walau bagaimanapun, anda mungkin merasa senang untuk mengendalikan input sama ada sebagai rentetan atau integer bergantung pada kes penggunaan. Untuk mencapai matlamat ini, anda boleh menggunakan antara muka, seperti yang ditunjukkan di bawah:

type Input interface {
   String() string
}
Salin selepas log masuk

Pelaksanaan Antara Muka untuk Jenis Rentetan dan Integer

Anda boleh melaksanakan antara muka Input untuk kedua-duanya rentetan dan integer:

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }
Salin selepas log masuk

Menggunakan Antara Muka Input dalam Anda Struct

Kini, anda boleh mengubah suai struct testCase anda untuk menggunakan antara muka Input:

type testCase struct {
   input   Input
   isValid bool
}
Salin selepas log masuk

Kod Contoh

Berikut ialah contoh bagaimana anda boleh menggunakan antara muka ini untuk menyimpan dan mendapatkan kedua-dua rentetan dan integer values:

package main

import (
    "fmt"
    "strconv"
)

type Input interface {
    String() string
}

type StringInput string
func (s StringInput) String() string { return string(s) }

type IntegerInput int
func (i IntegerInput) String() string { return strconv.Itoa(int(i)) }

type testCase struct {
    input   Input
    isValid bool
}

func main() {
    // Create a test case with a string input
    testString := testCase{
        input:   StringInput("Hello, world!"),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testString.input.String()) // Output: Hello, world!

    // Create a test case with an integer input
    testInt := testCase{
        input:   IntegerInput(123),
        isValid: true,
    }

    // Print the input as a string
    fmt.Println(testInt.input.String()) // Output: 123
}
Salin selepas log masuk

Dengan memanfaatkan antara muka Input, anda boleh mengendalikan kedua-dua nilai rentetan dan integer dengan lancar dalam struct Go anda, memberikan lebih fleksibiliti dan kebolehgunaan semula kod.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan Kedua-dua Rentetan dan Integer dalam Go Struct Menggunakan Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan