《the way to go》筆記
1:Import loads the public declaration from the compiled package,it dose not insert the source code
2:every piece of code is compiled only once
3:if the package name dose not start with . or /,like "fmt" or "container/list",Go looks for it in the global Go tree,if start with ./ the package is searched in the actual direcotry; start with / it is searched for in the (absolute) path indicated.
4:when the identifier starts with an uppercase letter,then the 'object' with this identifier is visible in code outside the package,Identifiers which starts with lowercase letter are invisible outside the package,but they are visible and usable in the whole
package.
5:a package can also be given another name(an alias),like import fm "fmt",the alias then is used in the following code
6:main function has no argument and return type.
7:the first { must be on the same line as the func-declaration:this is imposed by the compiler and the gofmt
8:go is a staticlly typed language
9:const data can only be of type boolean,number(int,float or complex) or string
10:Numeric constants have no size or sign, can be of arbitrary high precision and do no overflow:
const Ln2= 0.693147180559945309417232121458\
176568075500134360255254120680009
const Log2E= 1/Ln2 // this is a precise reciprocal
const Billion = 1e9 // float constant
const hardEight = (1 << 100) >> 97
As demonstrated \ can be used as a continuation character in a constant.
Constants can overflow only when they are assigned to a numeric variable with too little precision to represent the value, this results in a compile error
11:iota can also be used in an expression, like iota + 50. A new const block or declaration initializes iota back to 0.