Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahpetik Go String Literals daripada AST?

Bagaimana untuk Menyahpetik Go String Literals daripada AST?

Barbara Streisand
Barbara Streisandasal
2024-12-05 13:07:10306semak imbas

How to Unquote Go String Literals from an AST?

Menyahpetik Go String Literal daripada Syntax Tree

Apabila melintasi pepohon sintaks Go, mungkin perlu untuk mengekstrak nilai sebenar rentetan literal diwakili sebagai nod ast.BasicLit dengan Jenis ditetapkan kepada token.STRING. Walau bagaimanapun, nod ini pada mulanya mengandungi kod Go yang mewakili rentetan, bukan nilai literalnya.

Penyelesaian:

Untuk menukar kod literal rentetan Go kepada nilai sebenar, gunakan fungsi strconv.Unquote(). Fungsi ini mengalih keluar petikan daripada rentetan yang disebut, membolehkan anda memperoleh nilai rentetan mentah.

Nota:

strconv.Unquote() hanya boleh menyahtanda rentetan yang disertakan dalam petikan (sama ada tunggal atau berganda). Jika rentetan literal tidak disertakan dalam petikan, anda perlu menambahnya secara manual sebelum menggunakan fungsi.

Contoh:

import (
    "fmt"
    "strconv"
)

func main() {
    // Given a quoted string
    quotedString := "`Hi`"

    // Unquote it
    unquotedString, err := strconv.Unquote(quotedString)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println(unquotedString) // Prints "Hi"
    }

    // Given an unquoted string
    unquotedString2 := "Hi"

    // Add quotes and unquote it
    quotedString2 := strconv.Quote(unquotedString2)
    unquotedString2, err = strconv.Unquote(quotedString2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println(unquotedString2) // Also prints "Hi"
    }
}

Atas ialah kandungan terperinci Bagaimana untuk Menyahpetik Go String Literals daripada 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