c语言编程笔录

首页 >   > 笔记大全

笔记大全

dart golang 区别

更新时间:2023-09-29

第一段:语言背景介绍

Dart和Golang都是比较新的编程语言,分别由Google和一些前谷歌员工创建。Dart首次发布于2011年,旨在为网页开发提供更好的选择。而Golang,也被称为Go,是在2007年开始开发的,致力于简化网络和服务器应用程序的开发。


void main() {
  print('Hello, Dart!');
}

package main

import "fmt"

func main() {
    fmt.Println("Hello, Golang!")
}

第二段:语言设计比较

Dart是一种强类型、面向对象的语言,支持异步和同步编程,同时还支持可选命名参数和扩展方法。它主要应用于Web和移动端开发。相比之下,Golang是一种编译型、并发性强的语言,其语法与C相似,同时也支持垃圾回收,用于网络和服务器编程。


// 可选命名参数示例
void findInfo(int age, {String name, String address}) {
  print('Age: $age');
  if (name != null) {
    print('Name: $name');
  }
  if (address != null) {
    print('Address: $address');
  }
}

findInfo(18, name: 'Tom');
// Age: 18
// Name: Tom

package main

import "fmt"

// 结构体
type People struct{
    Name string
    Age int
}

// 根据年龄排序
type ByAge []People
func (a ByAge) Len() int { return len(a) }
func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }

func main() {
    people := []People{
        {"Tom", 19},
        {"Bob", 21},
        {"Lucy", 15},
    }

    // 根据年龄排序
    sort.Sort(ByAge(people))

    for _, p := range people {
        fmt.Println(p.Name, p.Age)
    }
    //Lucy 15
    //Tom 19
    //Bob 21
}

第三段:框架和库

Dart的最大特点是Flutter,它是用于构建高质量、跨平台应用的UI框架。Flutter在Google内部自2015年以来一直处于发展阶段,发展速度极快。它支持热更新,能够快速迭代和开发,并且有一个庞大的社区支持。Golang的生态系统中存在许多有用的库和框架,可以让开发人员轻松地处理各种不同的任务。其中很著名的有Beego、Gin、GORILLA、Revel等。


import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Demo'),
        ),
        body: Center(
          child: Text('Hello, Flutter!'),
        ),
      ),
    );
  }
}

package main

import (
    "fmt"
    "html"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}

第四段:语言应用场景

Dart和Golang都被用于高性能网络编程,但它们的应用场景略有不同。Dart主要用于构建Web服务、网络应用程序和移动应用程序,例如Flutter的跨平台开发。Golang主要使用于网络、分布式和云服务领域,尤其擅长于高并发系统的开发。它在数据存储、大数据处理、物联网和人工智能等领域也广泛应用。


//异步编程示例
import 'dart:async';

Future getNetworkData() async {
    var res = await http.get('https://www.example.com/api/data');

    if (res.statusCode == 200) {
        return res.body;
    } else {
        throw Exception('网络请求失败');
    }
}

package main

import (
    "fmt"
    "net"
    "os"
)

func main() {
    service := ":1200"

    tcpAddr, err := net.ResolveTCPAddr("tcp4", service)
    checkError(err)

    listener, err := net.ListenTCP("tcp", tcpAddr)
    checkError(err)

    for {
        conn, err := listener.Accept()
        if err != nil {
            continue
        }
        go handleClient(conn)
    }
}

func handleClient(conn net.Conn) {
    //处理请求
    conn.Close()
}

func checkError(err error) {
    if err != nil {
        fmt.Fprintf(os.Stderr, "错误:%s", err.Error())
        os.Exit(1)
    }
}