美文网首页
[Go语言] 对比java,学习go的基本语法

[Go语言] 对比java,学习go的基本语法

作者: zhongcx | 来源:发表于2018-08-19 16:50 被阅读0次

    在线测试工具

    go 代码 :http://www.runoob.com/try/runcode.php?filename=helloworld&type=go
    java 代码 : http://www.runoob.com/try/runcode.php?filename=HelloWorld&type=java

    1、打印输出

    运行结果

    hello world!
    22222222
    ssss
    44444444
    33333333
    %s1144444444
    %s2244444444

    go代码
    package main
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
        fmt.Printf("%s%s\n", "hello world","!")//主线程 格式化输出 多参数
        fmt.Fprint(  os.Stdout,"ssss\n")//主线程
        println("22222222")//子线程 没有缓冲
        println("33333333")//子线程 没有缓冲
        fmt.Printf("%s\n","44444444")//主线程 格式化输出
        fmt.Print("%s11","44444444\n")//主线程 拼接(可拼接数字,但有空格)
        fmt.Print("%s22"+"44444444\n")//主线程 拼接(只能拼接字符串)
    }
    
    java代码
    package test;
    
    public class Test {
        public static void main(String[] args) { 
            System.out.printf("%s%s\n", "hello world","!");//主线程 格式化输出 多参数
            System.out.printf(  "ssss\n");//主线程
            System.err.println("22222222");//子线程 没有缓冲
            System.err.println("33333333");//子线程 没有缓冲
            System.out.printf("%s\n","44444444");//主线程 格式化输出
            System.out.print("%s11".concat("44444444\n"));//主线程 拼接
            System.out.print("%s22"+"44444444\n");//主线程 拼接
        }
    }
    

    2、数据类型

    运行结果

    1字节 布尔型 例:false
    2字节 字符型 例:a
    4字节 单精度 例:3.4028235E38
    8字节 双精度 例:1.7976931348623157E308
    1字节 数字型 例:127
    2字节 数字型 例:97
    4字节 数字型 例:2147483647
    8字节 数字型 例:1533785164371

    go代码
    package main
    
    import (
        "fmt"
        "math"
        "time"
    )
    
    func main() {
        var mBoolean bool  = false
        var mChat uint16  = 'a'
        var mFloat float32 = math.MaxFloat32
        var mDouble float64 = math.MaxFloat64
        fmt.Print("1字节 布尔型 例:",mBoolean,"\n");
        fmt.Printf("2字节 字符型 例:%c\n",mChat);
        fmt.Print("4字节 单精度 例:",mFloat,"\n");
        fmt.Print("8字节 双精度 例:",mDouble,"\n");
        var mByte byte = math.MaxInt8;
        var mShort rune = 97;
        var mInt int32 = math.MaxInt32;
        var mLong int64 =  time.Now().UnixNano() / 1e6;
        fmt.Print("1字节 数字型 例:",mByte,"\n");
        fmt.Printf("2字节 数字型 例:%d\n",mShort);
        fmt.Print("4字节 数字型 例:",mInt,"\n");
        fmt.Print("8字节 数字型 例:",mLong,"\n");
    }
    
    java代码
    package test;
    
    public class Test {
        public static void main(String[] args) { 
            boolean mBoolean = false;
            char mChat = 'a';
            float mFloat = Float.MAX_VALUE;
            double mDouble = Double.MAX_VALUE;      
            System.out.println("1字节 布尔型 例:"+mBoolean);
            System.out.println("2字节 字符型 例:"+mChat);
            System.out.println("4字节 单精度 例:"+mFloat);
            System.out.println("8字节 双精度 例:"+mDouble);
            byte mByte = Byte.MAX_VALUE;
            short mShort = (short)"a".charAt(0);
            int mInt = Integer.MAX_VALUE;
            long mLong = System.currentTimeMillis();
            System.out.println("1字节 数字型 例:"+mByte);
            System.out.println("2字节 数字型 例:"+mShort);
            System.out.println("4字节 数字型 例:"+mInt);
            System.out.println("8字节 数字型 例:"+mLong);
            
        }
    }
    

    3、条件语句

    运行结果

    AB

    go代码
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        if n, _ := fmt.Printf("A"); n != 1 {
            fmt.Print("A");
        } else {
            fmt.Print("B");
        }
    }
    
    java代码
    package test;
    
    public class Test {
        public static void main(String[] args) { 
            if(System.out.printf("A")==null) {
                System.out.print("A");
            }else {
                System.out.print("B");
            }
        }
    }
    
    

    4、循环语句

    运行结果

    百位数是0,结束本次循環
    百位数是奇数,跳过
    个数是奇数,回到最外层循环,当前结果为:201
    百位数是奇数,跳过
    个数是奇数,回到最外层循环,当前结果为:401
    百位数是奇数,跳过
    个数是奇数,回到最外层循环,当前结果为:601
    百位数是奇数,跳过
    个数是奇数,回到最外层循环,当前结果为:801
    百位数是奇数,跳过

    go代码
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        i := 0;
        loop: for  ; i<10 ;i++  {
            if i%2==1  {
                fmt.Print("百位数是奇数,跳过"+"\n");
                continue;
            }
            for   j := 0 ;j <10;j++  {
                if i==0 {
                    fmt.Print("百位数是0,结束本次循環"+"\n");
                    break;
                }
                for   k:=0;k<10;k++  {
                    if k%2==1  {
                        fmt.Printf("个数是奇数,回到最外层循环,当前结果为:%d%d%d\n",i,j,k);
                        /*方案一*/
                        //continue loop;
                        /*方案二*/
                        i++;
                        goto loop;
                        
                    }
                }
            }
        }
    
    }
    
    java代码
    package test;
    
    public class Test {
        public static void main(String[] args) { 
            go:for(int i = 0 ;i<10;i++) {
                if(i%2==1) {
                    System.out.println("百位数是奇数,跳过");
                    continue;
                }
                for(int j = 0 ;j <10;j++) {
                    if(i==0) {
                        System.out.println("百位数是0,结束本次循環");
                        break;
                    }
                    for(int k=0;k<10;k++) {
                        if(k%2==1) {
                            System.out.println("个数是奇数,回到最外层循环,当前结果为:"+i+j+k);
                            continue go;
                        }
                    }
                }
            }
        }
    }
    

    5、函数调用

    运行结果

    奖品信息:{手机=2, 笔记本=1}

    获取名单:
    欢欢抽中:手机
    旭旭抽中:笔记本
    虎虎抽中:手机

    go代码
    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    func main() {
        /* 模拟抽奖系统 */
        var peoples = []string{ "旭旭", "欢欢", "亮亮", "伦伦", "虎虎", "文文" };// 参与人
        prizes := []string { "手机", "笔记本", "手机" };// 奖品列表
    
        mPeoples,mMap := randomPeople(peoples, prizes);
        fmt.Printf("奖品信息:%v\n\n" ,mMap );
        fmt.Printf("获取名单:\n");
        for i := 0 ;i< len(prizes);i++  {
            fmt.Print(mPeoples[i]+"抽中:"+prizes[i]+"\n");
        }
    
    
    }
    
    func randomPeople(peoples []string ,prizes []string )( mPeoples []string ,mMap map [string]int ){
        r := rand.New(rand.NewSource(time.Now().UnixNano()))
        for i := 0; i < len(peoples); i++  {
            /*找到随机的下标*/
            randomIndex := (int32)(r.Intn(len(peoples)-i));
            /*与末尾进行交换*/
            t := peoples[len(peoples)-1-i] ;
            peoples[len(peoples)-1-i] = peoples[randomIndex] ;
            peoples[randomIndex] = t;
        }
        mPeoples = peoples;
    
        mMap =  map [string]int{};
        for i:=0;i< len(prizes);i++{
            mMap[prizes[i]] = mMap[prizes[i]] + 1;//此奖品递加1
        }
        return;
    }
    
    java代码
    package test;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class Test {
        public static void main(String[] args) {
            /* 模拟抽奖系统 */
            String[] peoples = new String[] {  "旭旭", "欢欢", "亮亮", "伦伦", "虎虎", "文文" };// 参与人
            String[] prizes = new String[] { "手机", "笔记本", "手机" };// 奖品列表
    
            System.out.println("奖品信息:" + randomPeople(peoples, prizes)+"\n");
            System.out.println("获取名单:");
            for(int i = 0 ;i<prizes.length;i++) {
                System.out.println(peoples[i]+"抽中:"+prizes[i]);
            }
            
        }
    
        /**
         * 对参与人进行随机排序,并获得奖品分组信息
         * @param peoples 参与人
         * @param prizes  奖品列表
         * @return 奖品分组信息
         */
        public static String randomPeople(String[] peoples, String[] prizes) {
            for (int i = 0; i < peoples.length; i++) {
                /*找到随机的下标*/
                int randomIndex = (int)(Math.random()*(peoples.length-i));
                /*与末尾进行交换*/
                String t = peoples[peoples.length-1-i] ;
                peoples[peoples.length-1-i] = peoples[randomIndex] ;
                peoples[randomIndex] = t;
            }
            Map<String,Integer> map = new HashMap<String,Integer>();
            for(int i=0;i<prizes.length;i++) {
                if(map.get(prizes[i])==null) {
                    map.put(prizes[i], 0);
                }
                map.put(prizes[i],map.get(prizes[i])+1);//此奖品递加1
            }
            return map.toString();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:[Go语言] 对比java,学习go的基本语法

          本文链接:https://www.haomeiwen.com/subject/fuwciftx.html