はじめに
本記事はGo言語再履修用に作成した
本文
関数
main
main.go
package main
func main() {
println("Hello")
}
自作関数
main.go
package main
func main() {
println(testfunc(1, 2))
}
func testfunc(a, b int) int {
ans := a + b
return ans
}
自作関数(戻値複数)
main.go
package main
func main() {
res1, res2 := testfunc(2, 1)
println(res1, res2)
}
func testfunc(a, b int) (int,int) {
ans1 := a + b
ans2 := a - b
return ans1, ans2
}
配列(for文)
既知
main.go
package main
func main() {
arr := []int{1, 2, 3}
for i := 0; i < len(arr); i ++ {
println(arr[i])
}
}
未知
main.go
package main
func main() {
arr := make([]int, 3)
arr[0] = 1
arr[1] = 2
arr[2] = 3
for i := 0; i < len(arr); i ++ {
println(arr[i])
}
}
結合
main.go
package main
func main() {
arr1 := []int{1, 2, 3}
arr2 := []int{4, 5, 6}
arr := append(arr1, arr2...)
for i := 0; i < len(arr); i ++ {
println(arr[i])
}
}
文字操作
文字→数値(Atoi)
main.go
package main
import "strconv"
func main() {
str := "123"
num, _ := strconv.Atoi(str)
println(num)
}
文字→数値(ParseInt)(16進、2進)
main.go
package main
import "strconv"
func main() {
str1 := "0x123"
str2 := "0b101"
num1, _ := strconv.ParseInt(str1, 0, 32)
num2, _ := strconv.ParseInt(str2, 0, 32)
println(num1, num2)
}
数値→文字
main.go
package main
import "fmt"
func main() {
num := 123
str := fmt.Sprintf("%d", num)
println(str)
}
文字列分割
main.go
package main
import "strings"
func main() {
str := "123,aiueo"
arr := strings.Split(str, ",")
for i := 0; i < len(arr); i++ {
println(arr[i])
}
}
文字結合
main.go
package main
func main() {
str1 := "123"
str2 := "aiueo"
strs := str1 + str2
println(strs)
}
機能群
CSVリード
main.go
package main
import (
"bufio"
"os"
"strings"
)
func main() {
res := readcsv("test.csv")
for i := 0; i < len(res); i++ {
for a := 0; a < len(res[i]); a++ {
print(res[i][a] + ",")
}
println()
}
}
func readcsv(fn string) [][]string {
res := make([][]string, 0)
fp, err := os.Open(fn)
if err != nil {
println("FILE OPEN ERROR")
}
defer fp.Close()
sc := bufio.NewScanner(fp)
for sc.Scan() {
rescache := make([][]string, 1)
rescache[0] = strings.Split(sc.Text(), ",")
res = append(res, rescache...)
}
return res
}
ファイル出力
main.go
package main
import "os"
func main() {
writeLine("test.txt", []string{"hoge", "fuga"})
}
func writeLine(fn string, strs []string) {
fp, err := os.Create(fn)
if err != nil {
println("FILE ERROR")
}
defer fp.Close()
for i := 0; i < len(strs); i++ {
fp.WriteString(strs[i])
fp.WriteString("\n")
}
}
コマンドライン入力
main.go
package main
import "os"
func main() {
println(os.Args[1])
}