Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengekstrak Nilai Rentetan daripada Go String Literal dalam Nod AST?

Bagaimana untuk mengekstrak Nilai Rentetan daripada Go String Literal dalam Nod AST?

Susan Sarandon
Susan Sarandonasal
2024-12-07 16:51:11756semak imbas

How to Extract the String Value from a Go String Literal in an AST Node?

Mengambil Nilai Rentetan daripada Kod Harfiah Go String

Dalam senario manipulasi pokok sintaks Go, anda mungkin perlu mengekstrak nilai rentetan literal daripada nod ast.BasicLit. Walaupun nod ini menunjukkan jenis literal rentetan, nilainya diwakili sebagai kod Go dan bukannya nilai rentetan sebenar. Artikel ini membincangkan penyelesaian kepada cabaran ini.

Penyelesaian: strconv.Unquote()

Fungsi strconv.Unquote() ialah kuncinya untuk menangani keperluan ini. Ia membolehkan penukaran literal rentetan yang diwakili sebagai kod Go kembali kepada nilainya yang tidak disebut. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa strconv.Unquote() hanya nyah petikan rentetan yang disertakan dalam tanda petikan ("). Oleh itu, jika rentetan literal dalam nod ast.BasicLit anda kekurangan tanda petikan, anda mesti menambahnya secara manual sebelum menggunakan strconv.Unquote().

Contoh Penggunaan:

import (
    "fmt"
    "strconv"
)

func main() {
    // String literal without quotation marks (will fail)
    str1 := "Hello"

    // String literal with quotation marks (valid)
    str2 := `"Hello world"`

    // Manually adding quotation marks to the first string
    str1 = strconv.Quote(str1)

    // Unquoting the string literals
    unqStr1, _ := strconv.Unquote(str1)
    unqStr2, _ := strconv.Unquote(str2)

    fmt.Println(unqStr1) // Output: Hello
    fmt.Println(unqStr2) // Output: Hello world
}

Penting Nota:

  • strconv.Unquote() hanya nyahpetikan rentetan dalam tanda petikan.
  • Jika rentetan literal mengandungi aksara khas (mis., pemisah baris ), strconv.Quote() mesti digunakan sebelum ini strconv.Unquote() untuk pengendalian yang betul.
  • Nilai pulangan _ dalam contoh diabaikan untuk ringkasnya;

Atas ialah kandungan terperinci Bagaimana untuk mengekstrak Nilai Rentetan daripada Go String Literal dalam Nod AST?. 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