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

2018-08-19  本文已影响0人  zhongcx

在线测试工具

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();
    }
}

上一篇 下一篇

猜你喜欢

热点阅读