Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menyimpan Kedua-dua Rentetan dan Integer dalam Go Struct Menggunakan Antara Muka?

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

Susan Sarandon
Susan Sarandonasal
2024-11-17 07:54:03281semak imbas

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
}

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
}

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)) }

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
}

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
}

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!

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