Fscanf dan mengetepikan medan seperti dalam C

WBOY
Lepaskan: 2024-02-12 16:18:05
ke hadapan
1135 orang telah melayarinya

Fscanf 并像 C 中那样省略字段

Kandungan soalan

Adakah mungkin untuk meninggalkan medan %*s seperti dalam C?

var pid int
fmt.Fscanf(r, "%*s %d", &pid)
Salin selepas log masuk

Penyelesaian

Sebenarnya, anda tidak boleh melakukan ini dalam Go (sekurang-kurangnya pada Go 1.21.0).

Kod sumber menunjukkan:

(tatasusunan Fscanf(r io.Reader, rentetan format, a...mana-mana) dalam <code>a). Oleh itu, anda mesti mentakrifkan parameter dalam a walaupun anda tidak mengambil berat tentang nilainya

Jika anda tidak mahu mentakrifkan pembolehubah, anda boleh menggunakan:

var pid int
fmt.Fscanf(r, "%s %d", new(string), &pid)
Salin selepas log masuk

Alternatif lainio.ReadAll

Untuk kes khusus anda, untuk menghuraikan sesuatu dalam pembaca, anda boleh membaca pembaca terlebih dahulu ke dalam rentetan (cth.

): strings.Split CB835C294C06824721603abd255bd78a

Kemudian gunakan kaedah
    atau ungkapan biasa, contohnya:
  1. strings.Split
  2. dengan
  • pidString := strings.Split(string(s), " ")[1]
    pid, err := strconv.Atoi(pidString)
    if err != nil {
        panic(err) // handle the error
    }
    
    Salin selepas log masuk
  • Gunakan ungkapan biasa:

    re := regexp.MustCompile(`[^\s]+ (?P<pid>\d+)`) // similar to "%s %d"
    matches := re.FindStringSubmatch(s)
    pidString := matches[re.SubexpIndex("pid")]
    pid, err := strconv.Atoi(pidString)
    if err != nil {
        panic(err) // handle the error
    }
    
    Salin selepas log masuk
    🎜Mungkin ada cara lain, tetapi ini sudah memadai. Semoga membantu. 🎜

    Atas ialah kandungan terperinci Fscanf dan mengetepikan medan seperti dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    sumber:stackoverflow.com
    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
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan