// 基本数据类型:char、unsigned char、signed char、int、unsigned int、short、unsigned short、long、unsigned long、float、double、long long、long double、void // 引入stdbool.h后可以使用布尔 externint i; // 声明 int j; // 定义、未初始化,值未知 int k = 1; // 定义、初始化 constint l = 1; // i内存的值只读,定义必须同时初始化,否则报错 #define pi 3.14159; int m = l; // 大部分编辑器执行到这一行时才会为l分配内存 int n = pi; // 预编译后这一行代码变成int n = 3.14159
int x; // 函数外定义,相当于全局变量 int y; intaddtwonum() { // 函数定义,格式:返回值 函数名(参数){ 函数体 } // 函数内声明变量 x 和 y 为外部变量 externint x; externint y; // 给外部变量(全局变量)x 和 y 赋值 x = 1; y = 2; return x+y; }
#include<stdio.h>// 引入头文件,# include 头文件 作用是预编译时将头文件内容替换这一行include
// main并不是真正的入口函数,真正的入口需要看编译器和可执行文件格式。 intmain() { // 写代码时程序入口,标准返回值类型是int,用于表示程序是否正常执行,0表示正常,其他表示不正常。 int result = addtwonum(); // 调用函数 addtwonum printf("result 为: %d",result);
// 基本数据类型:uint8、uint16、uint32、uint64、int8、int16、int32、int64、uint、int、bool、byte、rune(int32)、string、float32、float64 package main import"fmt"// 导入标准库包 var i int = 123// 全局变变量,当前main包可访问,全局变量只能用var name type = xx形式 var I int = 123// 全局变变量,大写开头,其他包可访问 const j int = 123// 常量,值不可修改
for { fmt.Println("无限循环") } for i := 0; i < 10; i++ { // i是块级作用域,离开for后不可访问 fmt.Println(i) } for key, val := aMap {} // 假如前面定义了aMap是一个字典 for index, val := []int[1,2,3] {} // 获取元素下标和值 for index, val := "你好" {} // val是rune值,index是字节位 c := make(chanint) gofunc() { c <- 1 c <- 2 close(c) }() for v := range c {} // 拿到通道值
// 基础类型:string、number、bigint、boolean、undefined、symbol、null、object // ES标准常见类型:String、Number、BigInt、Boolean、Undefined、Symbol、Null、Object、Date、Function、AsyncFuntcion、Array、ArrayBuffer、xxxArray、Error、(Weak)Map、(Weak)Set、Proxy、RegExp // 还有很多,看:https://tc39.es/ecma262/#sec-ecmascript-language-types i = 1// 如果在浏览器环境执行,i挂载到window,相当于缩写了window. var j = 2// 全局作用域(其实不一定,还要看js虚拟机,在某些地方是读不到这个j),在最外层使用var同样挂载到window,ts环境下推到出j是number let k = 3// 全局,不挂载到window const l = 4// 全局,不挂载到window,值只读
// 脚本语言,没有入口,从上到下执行
// ts推导出返回值是number,所以第三个:number可以缩写 functionsum(a: number, b: number): number { return a + b }
console.log(sum(i,j))
functionfn() { if (true) { console.log(true) } elseif (false) { console.log(false) } else { console.log('else') } for (;;) {} // 普通for和其他语言语言 let arr = [1,2,3] for (const item of arr) {} // 有点像go的for range // 有break continue
// es6之后有块级作用域,es5前没有 let i = 1 if (true) { let i = 2// 这时i是2 } // 这时i是1 }
functionfunc1(i: number) { returnfunction(j: number) { return i + j // 这里捕获i,作为闭包 } } let i1 = func1(1) console.log(i1(2))