golang book 8

Сегменты тот же массив, но без размера var mySlice []string mySlice = make([]string, 7) example := make([]int, 5) example[0] = 1 len(example) litters := []string{"a", "b"} из массива можно доставать части в сегменты mySlice := myArray[1:3] с какого индекса по какой (до второго индекса, не включая его) достать если часть не указывать myArray[:3] myArray[:] то с начала до конца массива сегмент, это как отрезок массива при изменении сегмента или массива, они видны в обеих случаях append прибавляет в коней сегмента slice = append(slice, "d") но там есть жоп если с одного сегмента создаются разные, и в последнем что-то меняется, то изменения будут только в родителе поэтому лучше при добавлении в сегмент присваивать в тот же сегмент.. так же можно добавлять сразу несколько slice = append(slice, "d", "v") если создать сегмент и не создавать в нем переменные, то сам сегмент вернет nil package main import ( "bufio" "fmt" "log" "os" "strconv" ) func main() { var numbers []float64 file, err := os.Open("data.txt") if err != nil { log.Fatal(err) } scanner := bufio.NewScanner(file) for scanner.Scan() { //fmt.Println(scanner.Text()) number, err := strconv.ParseFloat(scanner.> if err != nil { log.Fatal(err) } numbers = append(numbers, number) } err = file.Close() if err != nil { log.Fatal(err) } if scanner.Err() != nil { log.Fatal(scanner.Err()) } fmt.Printf("%#v\n", numbers) } в случае ошибок с функций, необходимо возвращать пустое значение того же формата и саму ошибку, либо nil вместо пустого значения Аргументы командной строки package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) } 0 аргумент - всегда путь к программе если надо исключить, то os.Args[1:] Как делать функции с большим количеством параметров? добавить ... перед последним типом func zzz(p1 int, p2 ...string) в p2 передается сегмент package main import ( "fmt" ) func sredn(numbers ...float64) float64 { var sum float64 = 0 for _, number := range numbers { sum += number } return sum / float64(len(numbers)) } func main() { fmt.Println(sredn(100, 50)) fmt.Println(sredn(90.7, 89.7, 98.5, 92.3)) } если вы хотите вставить сегмент вместо нескольких аргументов, то используйте многоточие, после сегмента intSlice := []int{5, 10, 15} myFunc(intSlice...)