Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Bagaimana untuk mendapatkan input semasa mengeluarkan?

Bagaimana untuk mendapatkan input semasa mengeluarkan?

Feb 09, 2024 pm 12:30 PM
penyerahan borang

Bagaimana untuk mendapatkan input semasa mengeluarkan?

PHP Editor Apple hari ini akan memperkenalkan kepada anda soalan biasa: Dalam PHP, apabila kita perlu mendapatkan input pengguna, bagaimanakah kita harus mengeluarkannya? Mendapatkan input pengguna adalah bahagian penting dalam menulis program interaktif, jadi adalah penting untuk menguasai kaedah yang betul. Dalam PHP, kita boleh menggunakan beberapa fungsi terbina dalam untuk mendapatkan input pengguna, seperti menggunakan fungsi `fgets()` untuk membaca baris input pengguna daripada input standard, atau menggunakan fungsi `fgetc()` untuk membaca daripada input standard Ambil aksara. Sudah tentu, kita juga boleh menggunakan pembolehubah superglobal `$_GET` atau `$_POST` untuk mendapatkan data yang diserahkan oleh pengguna melalui borang. Tidak kira kaedah yang digunakan, anda perlu memberi perhatian kepada pengesahan dan penapisan input pengguna yang diperlukan untuk memastikan keselamatan dan kestabilan program. Saya harap pengenalan di atas dapat membantu semua orang!

Kandungan soalan

Apa yang saya ingin laksanakan ialah sejenis aplikasi yang mencatatkan banyak maklumat ke konsol (contohnya, nombor dari 0 hingga 1000000000000) dan dapat menghentikan pelaksanaan dengan menaip arahan dalam konsol (contohnya "berhenti").

Saya mendapat idea untuk menggunakan goroutine, namun, saya tidak boleh memasukkan arahan kerana medan input berubah kepada output.

Ini kod saya:

package main

import (
    "bufio"
    "os"
)

var process bool = true

func commandHandler() {
    reader := bufio.NewReader(os.Stdin)
    for process {
        text, _ := reader.ReadString('\n')
        if text == "stop\r\n" {
            process = false
        }
    }
}

func task() {
    var i int64 = 0
    for ; i < 10000000000 || process; i++ {
        if i%30000000 == 0 { // Just to slow down an output for a while
            println(i)
        }
    }
}

func main() {
    go task()
    commandHandler()
}
Salin selepas log masuk

Dan keputusan yang saya dapat. Huruf adalah input yang saya cuba masukkan dan nombor adalah output aplikasi

Sebarang cadangan tentang cara melakukan input/output yang betul dalam aplikasi go saya?

Penyelesaian

Saya tidak boleh memasukkan arahan kerana medan input berubah kepada output

Anda boleh memasukkan arahan seperti biasa. Semasa anda menaipnya, ia digemakan ke konsol anda. Ini akan digabungkan dengan semua output lain ke konsol, yang mungkin mengelirukan pengguna - tetapi bukan komputer.

Dengan mengandaikan ini benar-benar sepadan dengan sistem pengendalian anda, program anda berjalan dengan baik:

if text == "stop\r\n" {
Salin selepas log masuk

Tiada pada OS saya r。更便携的方法是使用 strings.trimspace Alih keluar semua ruang.

import (
  ...
  "strings"
) 
... 
...
        if strings.TrimSpace(text) == "stop" {
Salin selepas log masuk

Dengan perubahan ini, kod itu berfungsi untuk saya. Seperti yang anda katakan, output dan input dimasukkan ke dalam skrin, tetapi anda masih boleh menaip stop dan menamatkan program.

Sebarang cadangan tentang cara melakukan input/output yang betul dalam aplikasi go saya?

Hampir tiada program terminal di dunia nyata yang interaktif. Sebaliknya, argumen baris arahan dan pembolehubah persekitaran menyediakan konfigurasinya apabila dipanggil. Ubah hala Shell biasanya digunakan untuk mengekalkan (dalam fail) atau halaman (mis. |less) sebarang output panjang daripada program.

Anda melihat banyak pengaturcaraan akademik menggunakan model terminal interaktif, di mana program menggesa pengguna dan mengumpul data, tetapi dalam dunia nyata ini sangat jarang berlaku dan selalunya merupakan komplikasi yang tidak bijak. Input standard biasanya digunakan untuk menyediakan input data yang diperlukan untuk pengiraan, bukannya arahan pengguna (seperti data untuk dimanipulasi atau ditapis).

Seperti yang dicadangkan @tinkerer, isyarat sudah boleh digunakan untuk menamatkan program anda (perincian adalah khusus OS). Jadi sebenarnya tidak perlu risau tentang cara aplikasi terminal mengendalikan perwakilan visual input dan output standard, yang diinterpolasi hanya untuk menamatkan program. Terdapat banyak isyarat lain dalam persekitaran posix, beberapa daripadanya sepenuhnya menghadap pengguna dan boleh digunakan untuk sebarang tujuan.

Apabila masa jalan memerlukan input pengguna yang lebih kompleks, program biasanya akan mendengar arahan pada soket. Untuk program sedemikian, antara muka web yang menyediakan perkhidmatan http menjadi semakin biasa disebabkan oleh kesederhanaan dan kebolehaksesan.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan input semasa mengeluarkan?. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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

Bagaimana untuk menyediakan lompat pada halaman log masuk layui Bagaimana untuk menyediakan lompat pada halaman log masuk layui Apr 04, 2024 am 03:12 AM

Langkah penetapan lompat halaman log masuk Layui: Tambah kod lompat: Tambah pertimbangan dalam borang log masuk serah acara klik butang, dan lompat ke halaman yang ditentukan melalui window.location.href selepas berjaya log masuk. Ubah suai konfigurasi borang: tambah medan input tersembunyi pada elemen borang lay-filter="login", dengan nama "redirect" dan nilainya ialah alamat halaman sasaran.

Bagaimana untuk mendapatkan data borang dalam layui Bagaimana untuk mendapatkan data borang dalam layui Apr 04, 2024 am 03:39 AM

layui menyediakan pelbagai kaedah untuk mendapatkan data borang, termasuk mendapatkan terus semua data medan borang, mendapatkan nilai elemen bentuk tunggal, menggunakan kaedah formAPI.getVal() untuk mendapatkan nilai medan yang ditentukan, menyerikan data borang dan menggunakannya sebagai parameter permintaan AJAX, dan mendengar acara penyerahan Borang mendapat data.

Bagaimana untuk melaksanakan interaksi front-end dan back-end dalam layui Bagaimana untuk melaksanakan interaksi front-end dan back-end dalam layui Apr 01, 2024 pm 11:33 PM

Terdapat kaedah berikut untuk interaksi hadapan dan belakang menggunakan layui: Kaedah $.ajax: Permudahkan permintaan HTTP tak segerak. Objek permintaan tersuai: membenarkan menghantar permintaan tersuai. Kawalan borang: mengendalikan penyerahan borang dan pengesahan data. Kawalan muat naik: melaksanakan muat naik fail dengan mudah.

Apakah peranan Serverlet dalam Java Apakah peranan Serverlet dalam Java Apr 12, 2024 pm 02:39 PM

Servlet berfungsi sebagai jambatan untuk komunikasi pelanggan-pelayan dalam aplikasi Web Java dan bertanggungjawab untuk: memproses permintaan pelanggan menjana respons HTTP secara dinamik menguruskan keadaan sesi HTTP;

Perbezaan antara acara dan $event dalam vue Perbezaan antara acara dan $event dalam vue May 08, 2024 pm 04:42 PM

Dalam Vue.js, acara ialah peristiwa JavaScript asli yang dicetuskan oleh penyemak imbas, manakala $event ialah objek peristiwa abstrak khusus Vue yang digunakan dalam komponen Vue. Secara amnya lebih mudah untuk menggunakan $event kerana ia diformat dan dipertingkatkan untuk menyokong pengikatan data. Gunakan acara apabila anda perlu mengakses kefungsian khusus objek acara asli.

Bagaimana untuk membina aplikasi satu halaman menggunakan PHP Bagaimana untuk membina aplikasi satu halaman menggunakan PHP May 04, 2024 pm 06:21 PM

Langkah-langkah untuk membina aplikasi satu halaman (SPA) menggunakan PHP: Cipta fail PHP dan muatkan Vue.js. Tentukan contoh Vue dan buat antara muka HTML yang mengandungi teks input dan output teks. Buat fail rangka kerja JavaScript yang mengandungi komponen Vue. Sertakan fail rangka kerja JavaScript ke dalam fail PHP.

Apakah senario aplikasi Java Servlet? Apakah senario aplikasi Java Servlet? Apr 17, 2024 am 08:21 AM

JavaServlet boleh digunakan untuk: 1. Penjanaan kandungan dinamik 2. Akses dan pemprosesan borang; Contoh: Cipta FormSubmitServlet untuk mengendalikan penyerahan borang, menggunakan nama dan e-mel sebagai parameter dan mengubah hala ke success.jsp.

Apakah senario yang boleh digunakan untuk pengubah suai peristiwa dalam vue? Apakah senario yang boleh digunakan untuk pengubah suai peristiwa dalam vue? May 09, 2024 pm 02:33 PM

Pengubah suai acara Vue.js digunakan untuk menambah gelagat tertentu, termasuk: menghalang gelagat lalai (.prevent) menghentikan acara menggelegak (.stop) acara sekali (.sekali) menangkap acara (.capture) mendengar acara pasif (.pasif) Suai pengubah suai (.self)Pengubah suai kunci (.key)

See all articles