Go 언어 프로그래밍 실례(8)
다음 코드는github에 다음 창고에 저장됩니다:github
Go 파일 읽기
프로그램의 기본 기능 중 하나는 바로 파일의 조작이다. 여기서 Go가 파일을 읽을 때 잘못된 판단을 해야 한다는 사고방식을 제공한다.
package main
import (
"io/ioutil"
"fmt"
"os"
"bufio"
)
//
//
func check(e error){
if e != nil {
panic(e)
}
}
func main(){
//
dat , err := ioutil.ReadFile("test.log")
check(err)
fmt.Print(string(dat))
// , 。
f,err := os.Open("test.log")
check(err)
// 5
b1 := make([]byte,5)
n1,err:=f.Read(b1)
check(err)
fmt.Printf("%d bytes: %s
",n1,string(b1))
//
o2 , err := f.Seek(5,0)
check(err)
b2 := make([]byte,2)
n2,err := f.Read(b2)
check(err)
fmt.Printf("%d bytes @ %d: %s
",n2,o2,string(b2))
// , Seek(0,0)
_,err = f.Seek(0,0)
check(err)
//bufio , ,
// 。
r4 := bufio.NewReader(f)
b4,err := r4.Peek(5)
check(err)
fmt.Printf("5 bytes: %s
",string(b4))
//
f.Close()
}
Go 파일 쓰기 인스턴스
Go에서 파일의 읽기 및 쓰기 모드는 비슷합니다.파일을 쓰는 데도 대부분의 호출 오류를 검사해야 합니다.
package main
import (
"io/ioutil"
"os"
"fmt"
"bufio"
)
func check(e error){
if e != nil {
panic(e)
}
}
func main(){
//
d1 := []byte("hello
go
")
err := ioutil.WriteFile("write_test.txt",d1,0644)
check(err)
// ( )
f ,err := os.Create("write_test2.txt")
check(err)
//
defer f.Close()
//
d2 := []byte{115,111,109,101,10}
n2,err := f.Write(d2)
check(err)
fmt.Printf("Write %d bytes
",n2)
//
n3 , err := f.WriteString("writes
")
fmt.Printf("write %d bytes
",n3)
// ,
f.Sync()
//bufio
w := bufio.NewWriter(f)
n4,err:=w.WriteString("buffered
")
fmt.Printf("write %d bytes
",n4)
w.Flush()
}
Go 행 필터 인스턴스
선 필터는 stdin의 입력을 읽고 처리한 다음 파생 결과를 stdout에 출력하는 흔한 프로그램이다.grep,sed는 흔히 볼 수 있는 선 필터입니다.
package main
import (
"bufio"
"os"
"strings"
"fmt"
)
func main(){
// os.Stdin ,
// 。
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan(){
// `Text` ,
ucl := strings.ToUpper(scanner.Text())
//
fmt.Println(ucl)
}
// 。 , scan 。
if err := scanner.Err(); err != nil {
fmt.Println(os.Stderr,"error:",err)
os.Exit(1)
}
}
Go 명령행 매개변수 인스턴스
명령행 매개 변수는 매개 변수화 프로그램이 실행하는 데 자주 사용하는 방법이다.예: go run hello.go는 go와 hello를go는 매개 변수로 go 프로그램에 적용됩니다.
os.Args는 원래 명령줄 매개변수에 액세스할 수 있습니다.이 슬라이드의 첫 번째 값은 프로그램의 경로,os입니다.Args[1:] 프로그램의 매개 변수를 저장합니다.단일 ARg 값을 정상적으로 인덱스할 수 있습니다.
참고: 프로그램을 실행하려면 cmd에서 다음을 수행하는 것이 좋습니다.
go run cmd_args.go 1 2 3 4 5
package main
import (
"os"
"fmt"
)
func main(){
//os.Args
argsWithProg := os.Args
argsWithoutProg := os.Args[1:]
//
arg := os.Args[3]
fmt.Println(argsWithoutProg)
fmt.Println(argsWithProg)
fmt.Println(arg)
}
Go 명령행 식별 인스턴스
명령행 표지는 명령행 프로그램 옵션을 제정하는 데 자주 사용하는 방법이다.예를 들어 gobuild -ldflags abc ac.go에서 -ldflags는 명령행 표식이다.Go는 기본 명령행 ID 해석을 지원하는 ID 플래그 패키지를 제공합니다.다음 예는 다음과 같습니다.
import (
"flag"
"fmt"
)
func main(){
// , 。
//foo word 。 flag.String
wordPtr := flag.String("word","foo","a string")
// numb fork , word
numbPtr := flag.Int("numb",42,"an int")
boolPtr := flag.Bool("fork",false,"a bool")
// 。
//
var svar string
flag.StringVar(&svar,"svar","bar","a string var")
// ,
flag.Parse()
//
fmt.Println("word:",*wordPtr)
fmt.Println("numb:",*numbPtr)
fmt.Println("fork",*boolPtr)
fmt.Println("svar:",svar)
fmt.Println("tail",flag.Args())
}
작업 출력은 다음과 같습니다.
C:\Go\MyGo\src\lesson8_file>go build cmd_flags.go
C:\Go\MyGo\src\lesson8_file>cmd_flags.exe -word=ckl -numb=05202235 -fork -svar=flag
word: ckl
numb: 1377437
fork true
svar: flag
tail []
추가 논의 대상: 295023494(내장형)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.