Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Perbezaan antara aliran keluaran konsol dan aliran fail media

Perbezaan antara aliran keluaran konsol dan aliran fail media

Feb 08, 2024 pm 11:15 PM
overflow

Perbezaan antara aliran keluaran konsol dan aliran fail media

Perbezaan antara aliran keluaran konsol dan aliran fail media adalah konsep penting dalam pembangunan program. Aliran keluaran konsol digunakan terutamanya untuk mengeluarkan maklumat semasa program berjalan ke konsol untuk memudahkan pembangun menyahpepijat dan melihat hasil yang sedang dijalankan. Aliran fail media digunakan untuk membaca dan menulis fail media, seperti audio, video, dsb. Terdapat beberapa perbezaan dalam senario penggunaan, pemprosesan data dan aplikasi antara kedua-duanya Adalah sangat penting bagi pembangun untuk memahami dan menguasai perbezaan ini. Seterusnya kita akan meneroka perbezaan dan petua penggunaan antara keduanya secara terperinci.

Kandungan soalan

Saya menghadapi masalah cuba memaparkan GIF dalam Go. Fail GIF output tidak boleh dibuka menggunakan satu kaedah, tetapi boleh dibuka secara normal menggunakan kaedah lain. Saya menemui Rendering .gif dalam Go tetapi ia tidak menyelesaikan masalah khusus saya.

Ini adalah kod yang dimaksudkan:

package main

import (
    "bufio"
    "fmt"
    "image"
    "image/color"
    "image/gif"
    "io"
    "math"
    "math/rand"
    "os"
    "time"
)

var palette = []color.Color{color.White, color.Black}

const (
    whiteIndex = 0
    blackIndex = 1
)

func main() {
    w := bufio.NewWriter(os.Stdout)
    lissajous(w)
}

func lissajous(out io.Writer) {
    const (
        cycles  = 5
        res     = 0.001
        size    = 100
        nframes = 64
        delay   = 8
    )
    rand.Seed(time.Now().UTC().UnixNano())

    freq := rand.Float64() * 3.0
    anim := gif.GIF{LoopCount: nframes}
    phase := 0.0

    for i := 0; i < nframes; i++ {
        rect := image.Rect(0, 0, 2 * size+1, 2 * size + 1)
        img := image.NewPaletted(rect, palette)

        for t := 0.0; t < cycles * 2 * math.Pi; t += res {
            x := math.Sin(t)
            y := math.Sin(t * freq + phase)
            img.SetColorIndex(size + int(x * size + 0.5), size + int(y * size + 0.5), blackIndex)
        }
        phase += 0.1
        anim.Delay = append(anim.Delay, delay)
        anim.Image = append(anim.Image, img)
    }
    err := gif.EncodeAll(out, &anim)
    if err != nil {
        return
    } else {
        fmt.Println(err)
    }
}
Salin selepas log masuk

Berikut adalah arahan:

go build main.go
Salin selepas log masuk
main > out.gif
Salin selepas log masuk

Kemudian, out.gif tidak boleh dibuka. Kaedah ini berkesan walaupun:

func main() {
    fileName := "out.gif"
    f, err3 := os.Create(fileName)
    if err3 != nil {
        fmt.Println("create file fail")
    }
    w := bufio.NewWriter(f) 
    lissajous(w)
    w.Flush()
    f.Close()

}
Salin selepas log masuk

Saya keliru mengapa kaedah pertama tidak mencipta fail GIF berfungsi, tetapi kaedah kedua melakukannya. Adakah ini berkaitan dengan cara Go mengendalikan penulisan atau penimbalan fail?

Penyelesaian

Menurut @CeriseLimón Nota :

func main() {
    w := bufio.NewWriter(os.Stdout)
    lissajous(w)
    w.Flush()
}
Salin selepas log masuk

Jelaskan soalan terakhir

Atas ialah kandungan terperinci Perbezaan antara aliran keluaran konsol dan aliran fail media. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Jan 15, 2025 pm 08:11 PM

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang May 06, 2024 pm 01:20 PM

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang

Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Apr 28, 2024 pm 02:12 PM

Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya?

Bagaimana untuk menggunakan kod orang lain dalam python Bagaimana untuk menggunakan kod orang lain dalam python May 05, 2024 pm 07:54 PM

Bagaimana untuk menggunakan kod orang lain dalam python

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 May 03, 2024 pm 09:20 PM

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java May 03, 2024 pm 02:09 PM

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java

Apakah maksud limpahan dalam css Apakah maksud limpahan dalam css Apr 28, 2024 pm 03:15 PM

Apakah maksud limpahan dalam css

Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? May 03, 2024 am 09:37 AM

Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua?

See all articles