go言語を勉強します私の練習問題の答えchapter 3
2986 ワード
この章では主にgoの中の関数を使って練習問題をする過程で出会ったいくつかの比較的記念すべき問題は命名の戻り関数を定義したが括弧の中に入れなかった結果、ずっとコンパイルしたが、一目で見てもどうやって間違っているのか分からない.
もう一つ印象に残っているのはgoの強いタイプチェックと変数の申明方法とc/c++の違いが明らかなのはarrayを定義する前にc/c++のポインタを見たことがあるようで、その*がどこに置かれているかを定義する問題と配列[]がどこに置くべきかがgoの中でデータ型がすべて後ろに置かれていることです.
var test_var int
test_varという変数のタイプはintという変数で、関数の体外にある場合はvarが少なくないことを明らかにしていますが、関数の内部では==これを定義するか==それとも区別のある定義と賦値が完全に分かれているか=書けば書くほどc/c++のアップグレードバージョンだと思いますほほほ
もう一つ印象に残っているのはgoの強いタイプチェックと変数の申明方法とc/c++の違いが明らかなのはarrayを定義する前にc/c++のポインタを見たことがあるようで、その*がどこに置かれているかを定義する問題と配列[]がどこに置くべきかがgoの中でデータ型がすべて後ろに置かれていることです.
var test_var int
test_varという変数のタイプはintという変数で、関数の体外にある場合はvarが少なくないことを明らかにしていますが、関数の内部では==これを定義するか==それとも区別のある定義と賦値が完全に分かれているか=書けば書くほどc/c++のアップグレードバージョンだと思いますほほほ
package main
import (
"fmt"
"strings"
)
func main() {
/*
for i := 1; i<=100; i++ {
fmt.Println(strings.Repeat("A", i))
}
for i := 1; i<=100; i++ {
switch {
case i%3==0 && i%5==0 :
fmt.Println("FizzBuzz")
case i%5==0:
fmt.Println("Buzz")
case i%3==0:
fmt.Println("Fizz")
default:
fmt.Println(i)
}
}
for i := 0; i<10; i++ {
fmt.Println(i)
}
var i int
LOOP:
if i < 10 {
fmt.Println(i)
i += 1
goto LOOP
}
var arr [10]int
for i := range arr {
fmt.Println(i)
}
*/
}
pengphy@Pengfei-Xue dsproxy_go$ cat chapter3.go
package main
import (
"fmt"
)
func getOrderedArg(a,b int) (small, big int) {
small = a
big = b
if a > b {
small = b
big = a
}
return
}
func float64Mean(data_in []float64) (mean float64) {
data_in_len := len(data_in)
if data_in_len == 0 {
return 0.0
}
sum := 0.0
for _, value := range data_in {
sum += value
}
mean = sum / float64(data_in_len)
return
}
type Stack []int
func (s Stack) push(value int) Stack {
if len(s)+1 > cap(s) {
fmt.Println("stack is full, can not store more")
}
s = append(s, value)
return s
}
func (s Stack) pop() (st Stack, value int) {
if len(s) == 0 {
fmt.Println("Stack is empty, can not pop")
}
value = s[len(s)-1]
st = s[:(len(s)-1)]
return
}
func main() {
/*
s := make(Stack, 0, 20)
fmt.Println(s)
s = s.push(32)
fmt.Println(s)
s, value := s.pop()
fmt.Println(value)
fmt.Println(s)
fmt.Println(getOrderedArg(1,2))
fmt.Println(getOrderedArg(4,2))
test_float64_slice := [...]float64{0.0,1.0,2.3232,4e-5,43.00}
fmt.Println(float64Mean(test_float64_slice[:]))
for i:= 0; i<10; i++ {
defer fmt.Println(i)
}
*/
}