go literal2 源码

  • 2022-07-15
  • 浏览 (967)

golang literal2 代码

文件路径:/test/literal2.go

// run

// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test Go2 literal syntax for basic types.
// Avoid running gofmt on this file to preserve the
// test cases with upper-case prefixes (0B, 0O, 0X).

package main

import "fmt"

func assert(cond bool) {
	if !cond {
		panic("assertion failed")
	}
}

func equal(x, y interface{}) bool {
	if x != y {
		fmt.Printf("%g != %g\n", x, y)
		return false
	}
	return true
}

func main() {
	// 0-octals
	assert(0_1 == 01)
	assert(012 == 012)
	assert(0_1_2 == 012)
	assert(0_1_2i == complex(0, 12)) // decimal digits despite leading 0 for backward-compatibility
	assert(00089i == complex(0, 89)) // decimal digits despite leading 0 for backward-compatibility

	// decimals
	assert(1_000_000 == 1000000)
	assert(1_000i == complex(0, 1000))

	// hexadecimals
	assert(0x_1 == 0x1)
	assert(0x1_2 == 0x12)
	assert(0x_cafe_f00d == 0xcafef00d)
	assert(0x_cafei == complex(0, 0xcafe))

	// octals
	assert(0o_1 == 01)
	assert(0o12 == 012)
	assert(0o_1_2 == 012)
	assert(0o_1_2i == complex(0, 0o12))

	// binaries
	assert(0b_1 == 1)
	assert(0b10 == 2)
	assert(0b_1_0 == 2)
	assert(0b_1_0i == complex(0, 2))

	// decimal floats
	assert(0. == 0.0)
	assert(.0 == 0.0)
	assert(1_0. == 10.0)
	assert(.0_1 == 0.01)
	assert(1_0.0_1 == 10.01)
	assert(1_0.0_1i == complex(0, 10.01))

	assert(0.e1_0 == 0.0e10)
	assert(.0e1_0 == 0.0e10)
	assert(1_0.e1_0 == 10.0e10)
	assert(.0_1e1_0 == 0.01e10)
	assert(1_0.0_1e1_0 == 10.01e10)
	assert(1_0.0_1e1_0i == complex(0, 10.01e10))

	// hexadecimal floats
	assert(equal(0x1p-2, 0.25))
	assert(equal(0x2.p10, 2048.0))
	assert(equal(0x1.Fp+0, 1.9375))
	assert(equal(0x.8p-0, 0.5))
	assert(equal(0x1FFFp-16, 0.1249847412109375))
	assert(equal(0x1.fffffffffffffp1023, 1.7976931348623157e308))
	assert(equal(0x1.fffffffffffffp1023i, complex(0, 1.7976931348623157e308)))

	assert(equal(0x_1p-2, 0.25))
	assert(equal(0x2.p1_0, 2048.0))
	assert(equal(0x1_0.Fp+0, 16.9375))
	assert(equal(0x_0.8p-0, 0.5))
	assert(equal(0x_1FF_Fp-16, 0.1249847412109375))
	assert(equal(0x1.f_ffff_ffff_ffffp1_023, 1.7976931348623157e308))
	assert(equal(0x1.f_ffff_ffff_ffffp1_023i, complex(0, 1.7976931348623157e308)))
}

相关信息

go 源码目录

相关文章

go 235 源码

go 64bit 源码

go alg 源码

go alias 源码

go alias1 源码

go alias2 源码

go alias3 源码

go align 源码

go append 源码

go append1 源码

0  赞