mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-09-14 15:42:01 +00:00
deploy: 06a1bdf735
This commit is contained in:
27
vendor/gopl.io/ch2/tempconv0/celsius.go
generated
vendored
Normal file
27
vendor/gopl.io/ch2/tempconv0/celsius.go
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
|
||||
// See page 39.
|
||||
//!+
|
||||
|
||||
// Package tempconv performs Celsius and Fahrenheit temperature computations.
|
||||
package tempconv
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Celsius float64
|
||||
type Fahrenheit float64
|
||||
|
||||
const (
|
||||
AbsoluteZeroC Celsius = -273.15
|
||||
FreezingC Celsius = 0
|
||||
BoilingC Celsius = 100
|
||||
)
|
||||
|
||||
func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }
|
||||
|
||||
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }
|
||||
|
||||
//!-
|
||||
|
||||
func (c Celsius) String() string { return fmt.Sprintf("%g°C", c) }
|
45
vendor/gopl.io/ch2/tempconv0/tempconv_test.go
generated
vendored
Normal file
45
vendor/gopl.io/ch2/tempconv0/tempconv_test.go
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
||||
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
|
||||
package tempconv
|
||||
|
||||
import "fmt"
|
||||
|
||||
func Example_one() {
|
||||
{
|
||||
//!+arith
|
||||
fmt.Printf("%g\n", BoilingC-FreezingC) // "100" °C
|
||||
boilingF := CToF(BoilingC)
|
||||
fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180" °F
|
||||
//!-arith
|
||||
}
|
||||
/*
|
||||
//!+arith
|
||||
fmt.Printf("%g\n", boilingF-FreezingC) // compile error: type mismatch
|
||||
//!-arith
|
||||
*/
|
||||
|
||||
// Output:
|
||||
// 100
|
||||
// 180
|
||||
}
|
||||
|
||||
func Example_two() {
|
||||
//!+printf
|
||||
c := FToC(212.0)
|
||||
fmt.Println(c.String()) // "100°C"
|
||||
fmt.Printf("%v\n", c) // "100°C"; no need to call String explicitly
|
||||
fmt.Printf("%s\n", c) // "100°C"
|
||||
fmt.Println(c) // "100°C"
|
||||
fmt.Printf("%g\n", c) // "100"; does not call String
|
||||
fmt.Println(float64(c)) // "100"; does not call String
|
||||
//!-printf
|
||||
|
||||
// Output:
|
||||
// 100°C
|
||||
// 100°C
|
||||
// 100°C
|
||||
// 100°C
|
||||
// 100
|
||||
// 100
|
||||
}
|
Reference in New Issue
Block a user