A Tour of Go 문제를 풀어보도록 하겠습니다.
17893 단어 GoA_Tour_of_Go
Go
업무상 Go를 해야 할 것 같아요, 공부해야 하는데...
따라서 Go의 시작으로서A Tour of Go.
연습문제만 풀다
Exercise: Loops and Functions
Exercise: Loops and Functions
제곱근의 순환 횟수를 구하는 데 10회 고정
package main
import (
"fmt"
"math"
)
func Sqrt(x float64) float64 {
z := 1.0
for i := 0; i < 10; i++ {
z -= (z * z - x) / (2 * z)
}
return z
}
func SqrtCount(x float64) (float64, int) {
z := 1.0
sqrt := math.Sqrt(x)
count := 0
for ; z != sqrt; count++ {
z -= (z * z - x) / (2 * z)
}
return z, count
}
func main() {
fmt.Printf("Sqrt : %v\n", Sqrt(2))
fmt.Printf("math.Sqrt : %v\n", math.Sqrt(2))
value, count := SqrtCount(2)
fmt.Printf("SqrtCount : %v(%d回ループ)\n", value, count)
}
실행 결과Sqrt : 1.414213562373095
math.Sqrt : 1.4142135623730951
SqrtCount : 1.4142135623730951(5回ループ)
Exercise: Maps
string에서 전달된 문장의 각 단어의 출현 횟수를 계산하다
package main
import (
"golang.org/x/tour/wc"
"strings"
)
func WordCount(s string) map[string]int {
count := make(map[string]int)
for _, word := range strings.Fields(s) {
count[word]++
}
return count
}
func main() {
wc.Test(WordCount)
}
실행 결과PASS
f("I am learning Go!") =
map[string]int{"Go!":1, "I":1, "am":1, "learning":1}
PASS
f("The quick brown fox jumped over the lazy dog.") =
map[string]int{"quick":1, "brown":1, "jumped":1, "the":1, "The":1, "over":1, "lazy":1, "dog.":1, "fox":1}
PASS
f("I ate a donut. Then I ate another donut.") =
map[string]int{"another":1, "I":2, "ate":2, "a":1, "donut.":2, "Then":1}
PASS
f("A man a plan a canal panama.") =
map[string]int{"A":1, "man":1, "a":2, "plan":1, "canal":1, "panama.":1}
Exercise: Fibonacci closure
반환 반환 피보나치 수를 반환하는 데 사용되는 엔클로저
package main
import "fmt"
func fibonacci() func() int {
a,b,c := 0,0,1
return func () int {
a, b, c = b, c, b + c
return a
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
실행 결과0
1
1
2
3
5
8
13
21
34
Exercise: Stringers
IPADdr형 구현, 출력 IP 주소 작성 시 표시
package main
import "fmt"
type IPAddr [4]byte
func (i IPAddr) String() string {
return fmt.Sprintf("%d.%d.%d.%d", i[0], i[1], i[2], i[3])
}
func main() {
hosts := map[string]IPAddr {
"loopback" : {127, 0, 0, 1},
"googleDNS" : {8, 8, 8, 8},
}
for name, ip := range hosts {
fmt.Printf("%v: %v\n", name, ip)
}
}
결과 내보내기loopback: 127.0.0.1
googleDNS: 8.8.8.8
Exercise: rot13Reader
ROT13 변환 암호
package main
import (
"io"
"os"
"strings"
)
type rot13Reader struct {
r io.Reader
}
func (rot rot13Reader) Read (b []byte) (int, error) {
num, err := rot.r.Read(b)
if err != nil {
return num, err
}
for i := 0; i < num; i++ {
if ('a' <= b[i] && b[i] <= 'm') || ('A' <= b[i] && b[i] <= 'M'){
b[i] += 13
} else if ('n' <= b[i] && b[i] <= 'z') || ('N' <= b[i] && b[i] <= 'Z') {
b[i] -= 13
}
}
return num, err
}
func main() {
s := strings.NewReader("Lbh penpxrq gur pbqr!")
r := rot13Reader{s}
io.Copy(os.Stdout, &r)
}
결과 내보내기You cracked the code!
느끼다
Reference
이 문제에 관하여(A Tour of Go 문제를 풀어보도록 하겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nukomaru/items/29bbeee29aede0876ea9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)