add chapter #3
This commit is contained in:
31
chapter3/format/format.go
Normal file
31
chapter3/format/format.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
// функция Printf выводит форматированную строку
|
||||
fmt.Printf("About one third %0.2f\n", 1.0/3.0)
|
||||
|
||||
// Функция Sprintf возвращает форматированную строку
|
||||
resultString := fmt.Sprintf("About one third %0.2f\n", 1.0/3.0)
|
||||
fmt.Printf(resultString)
|
||||
|
||||
// Формат %v не выводит спецсимволы
|
||||
fmt.Printf("%v %v %v", "", "\n", "\t")
|
||||
// Формат %#v выводит спецсимволы
|
||||
fmt.Printf("%#v %#v %#v", "", "\n", "\t")
|
||||
fmt.Println("")
|
||||
|
||||
// Форматирование в виде таблицы
|
||||
fmt.Printf("%12s | %s\n", "Product", "Cost in Cents")
|
||||
fmt.Println("-------------+-------------------")
|
||||
fmt.Printf("%12s | %2d\n", "Stamps", 50)
|
||||
fmt.Printf("%12s | %2d\n", "Paper CLips", 5)
|
||||
fmt.Printf("%12s | %2d\n", "Tape", 99)
|
||||
|
||||
fmt.Println("")
|
||||
// Дробный формат %5.3f - %: спецификатор, 5:минимальная ширина всего числа, .3: ширина дробной части, f: тип формата
|
||||
fmt.Printf("%%7.1f: %7.1f\n", 12.34567)
|
||||
// В формате дробной части цифры не округляются, а просто отбрасываются
|
||||
|
||||
}
|
||||
51
chapter3/func/func.go
Normal file
51
chapter3/func/func.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Обявление функции (первая строчка до фигурных скобок - сигнатура функции)
|
||||
// line и times - параметры функции
|
||||
func repeatLine(line string, times int) {
|
||||
for i := 0; i < times; i++ {
|
||||
fmt.Println(line)
|
||||
}
|
||||
}
|
||||
|
||||
func paintNeeded(width float64, height float64) (float64, error) {
|
||||
if width < 0 {
|
||||
return 0, fmt.Errorf("A width of %.2f is invalid", width)
|
||||
}
|
||||
if height < 0 {
|
||||
return 0, fmt.Errorf("A height of %.2f is invalid", height)
|
||||
}
|
||||
area := width * height
|
||||
return area / 10.0, nil
|
||||
}
|
||||
|
||||
// Функция возвращающая значение (тип возврата - второй float64) и обязательно return
|
||||
func double(num float64) float64 {
|
||||
return num * 2
|
||||
}
|
||||
|
||||
// Множественный возврат из функци
|
||||
func manyReturns() (int, bool, string) {
|
||||
return 1, true, "hello"
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
// Вызов функции( параметры становятся аргументами функции)
|
||||
repeatLine("hello", 4)
|
||||
|
||||
// paintNeeded(4.2, 3.0)
|
||||
// paintNeeded(5.2, 3.5)
|
||||
// paintNeeded(5.0, 3.3)
|
||||
amount, err := paintNeeded(4.2, -3.0)
|
||||
fmt.Println(err)
|
||||
fmt.Printf("%.2f liters needed\n", amount)
|
||||
|
||||
result := double(6.4) // Присвоение значения возврату из функции
|
||||
fmt.Print(result, "\n")
|
||||
|
||||
myNum, myBool, myString := manyReturns()
|
||||
fmt.Printf("Num: %d, Bool: %t, String: %s\n", myNum, myBool, myString)
|
||||
}
|
||||
Reference in New Issue
Block a user